package com.aelitis.azureus.core.dht.router;


/**
 * Observer interface to allow monitoring of contacts in the routing table.
 * 
 * @author Michael Parker
 */
public interface DHTRouterObserver {
    /**
     * Observer method invoked when a contact is added to the routing table.
     * 
     * @param contact
     *            the added contact
     */
    public void added(DHTRouterContact contact);

    /**
     * Observer method invoked when a contact is removed from the routing table.
     * 
     * @param contact
     *            the removed contact
     */
    public void removed(DHTRouterContact contact);

    /**
     * Observer method invoked when a contact changes between a bucket entry and a replacement in the routing table.
     * 
     * @param contact
     *            the contact that changed location
     */
    public void locationChanged(DHTRouterContact contact);

    /**
     * Observer method invoked when a contact is found to be alive.
     * 
     * @param contact
     *            the contact now alive
     */
    public void nowAlive(DHTRouterContact contact);

    /**
     * Observer method invoked when a contact is found to be failing.
     * 
     * @param contact
     *            the contact now failing
     */
    public void nowFailing(DHTRouterContact contact);

    /**
     * Router is not longer in use
     * 
     * @param router
     */

    public void destroyed(DHTRouter router);
}
